<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Rest参数 => 剩余参数(是扩展运算符的逆应用)

    // 扩展运算符的使用  => a.直接放到函数中  b. 在等号右边,表示把数组展开放到其他数组中
    // var list = [1,4,7,2,5,8,3,6,9];
    // console.log(...list); // 1,4,7,2,5,8,3,6,9

    // var arr = [...list];
    // console.log(arr);

    // 形参和实参一一对应
    /*  var sum = (a,b) => {
         // a = 1
         // b = 4;
     }
     sum(1,4); */

    // Rest参数(剩余参数) => 将剩余参数整合到数组中
    // ES6 引入 rest 参数（形式为...变量名），用于获取函数的多余参数，这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组，该变量将多余的参数放入数组中。

    // var sum = (...list) => {
    //     // ...list = 1,4,7,2,5,8,3,6,9  => 反推list = [1,4,7,2,5,8,3,6,9]
    //     console.log(list);
    //     return list.reduce((prev, item) => prev + item);
    // }
    // var result = sum(1, 4, 7, 2, 5, 8, 3, 6, 9);
    // console.log(result);


    var sum = (a,b,...list) => {
        // a = 1
        // b = 4
        // ...list = 7,2,5,8,3,6,9  => 反推list = [7,2,5,8,3,6,9]
        console.log(a,b,list);
    }
    sum(1, 4, 7, 2, 5, 8, 3, 6, 9);

    // 报错: Rest参数必须在参数列表的最后一位使用 (Rest parameter must be last formal parameter)
    // var sum = (a,b,...list,c) => {
    //     // a = 1
    //     // b = 4
    //     // ...list = 7,2,5,8,3,6,9  => 反推list = [7,2,5,8,3,6,9]
    //     console.log(a,b,list);
    // }
    // sum(1, 4, 7, 2, 5, 8, 3, 6, 9);


</script>

</html>